package logic;

import gui.GridWindow;

/**
 * Questions (see exercise sheet for English version)
 * 
 * Frage 1: Warum ist es mögich das Wegproblem mit Moore zu lösen, obwohl das Kantengewicht 4 beträgt?
 * 
 * TODO: Der Moore- Algorithmus kann jedes Wegproblem lösen, welches mit konstanten Kantengewichten
 * gegeben ist.
 * 
 * Frage 2: Welchen Fehler hat ihr Kommilitone gemacht? Warum findet sein A*- Algorithmus keinen optimalen Weg?
 * 
 * Um mit A* den optimalen Weg zu finden, darf die tatsächliche Weglänge nie überschätzt werden, dies ist jedoch
 * in diesem Beispiel der Fall, weil die Null-Strecke nicht erkannt wird. Die geprüften Felder, können sich nicht
 * über eine gewisse Grenze hinweg von der Luftlinie entfernen (abhängig von der stärke der Heuristik).
 * 
 * Frage 3: Wie hat ihr Kommilitone versucht das Problem zu lösen? Was ist dabei mit seinem 
 * A*- Algorithmus passiert? Was hätte er besser machen können? Diskutieren Sie mögliche Lösungsansätze!
 *  
 * Die beachteten Felder laufen jetzt sehr weit von der Luftlinie zwischen Start und Ziel weg, daher ist davon
 * auszugehen, dass die Heuristik deart abgschwächt wurde, dass sich der A* nun verhält wie ein Dijkstra.
 * Diese Lösung kommt also nicht in Frage, weil sie im allgemeinen Fall den Zeitvorteil des A* gegebüber dem Dijkstra
 * zerstört.
 * Man könnte nun vor der Ausführung des A* prüfen, ob sich ein solcher "Highway" im Grid befindet und in diesem Fall
 * das Wegproblem mit dem Dijkstra lösen um den optimalen Weg zu finden. Jedoch besteht auch hier das Problem zu
 * unterscheiden, welche Nullstrecken tatsächlich relevant sind und welche nicht.
 * Eine dritte Möglichkeit wäre sowohl Dijkstra und A* laufen zu lassen, und sich für den kürzeren Pfad zu entscheiden.
 * 
 */

/**
 * provides functionality to interact with the application
 * 
 * @author Jakob Karolus, Kevin Munk
 * @version 1.0
 * 
 */
public class Main {

	public static void main(String[] args) {
		@SuppressWarnings("unused")
		GridWindow frame = new GridWindow();
	}

}
